home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / ForCLI / AntiBorder.lha / AntiBorder / ab.s < prev    next >
Text File  |  1991-08-26  |  4KB  |  200 lines

  1. * ANTIBORDER V1.0 RECONSTRUCTION (I LOST THE SOURCE)
  2. *  (C) 1990,91 Paul Hayter
  3. *  LATE JUNE 91
  4.     
  5.     INCLUDE "PHAD:DEFS/INTUITION.DEFS"
  6.     INCLUDE "PHAD:DEFS/GRAPHICS.DEFS"
  7.     INCLUDE "PHAD:DEFS/LIBRARIES.DEFS"
  8.     INCLUDE "PHAD:OFFS/DOS.I"
  9.     INCLUDE "PHAD:OFFS/EXEC.I"
  10.     INCLUDE "PHAD:OFFS/INTUITION.I"
  11.  
  12. BEGIN
  13.     move.l    (4).w,a6
  14.     move.l    a0,a5
  15.     cmp.b    #10,(a0)
  16.     bne.s    gotoit
  17.     rts
  18. gotoit
  19.     moveq    #0,d0
  20.     lea    dosname(pc),a1
  21.     jsr    _LVOOpenLibrary(a6)
  22.     move.l    d0,dosbase
  23.     cmpi.b    #'?',(a5)
  24.     beq    query
  25.  
  26.     move.b    (a5),yesorno
  27.     cmpi.b    #$0A,$01(a5)
  28.     beq.s    noram
  29.     cmpi.b    #'r',$02(a5)
  30.     bne.s    noram
  31.     move.l    dosbase(pc),a4    IF r OPTION SPECIFIED
  32.     lea    ramname(pc),a0    THEN LOCK RAM:
  33.     move.l    a0,d1
  34.     moveq    #ACCESS_READ,d2    WHICH MAKES SURE RAM-HANDLER IS LOADED
  35.     jsr    _LVOLock(a4)
  36.     tst.l    d0
  37.     beq.s    noram
  38.     move.l    d0,d1
  39.     jsr    _LVOUnLock(a4)
  40. noram
  41.     moveq    #$00,d0
  42.     lea    intname(pc),a1
  43.     jsr    _LVOOpenLibrary(a6)
  44.     move.l    d0,intbase
  45.     move.l    d0,a6
  46.     move.l    ib_ActiveWindow(a6),a4
  47.     bsr.s    move_and_resize
  48.     move.b    yesorno(pc),d0
  49.     cmp.b    #'y',d0
  50.     beq.s    noframe
  51. RESTORE_OLD_STATE
  52.     bsr    clear_screen
  53.     bsr    restore_borders
  54. 1$
  55.     bsr    null_resize
  56.     bsr    home_cursor
  57.     moveq    #$00,d1
  58.     bsr.s    read_screen
  59.     cmp.l    #$FFFFFFFF,d0    Check if top line has menu bar still there
  60.     bne.s    1$
  61.  
  62.     bsr    clear_screen
  63.     bra.s    finish_up
  64.  
  65. noframe    bsr    kill_borders
  66. 1$    bsr    clear_screen
  67.     moveq    #$08,d1
  68.     bsr.s    read_screen
  69.     tst.b    d0
  70.     bne.s    1$
  71.  
  72. finish_up    move.l    intbase(pc),a1
  73.     move.l    (4).w,a6
  74.     jsr    _LVOCloseLibrary(a6)
  75. closedos    move.l    dosbase(pc),a1
  76.     jsr    _LVOCloseLibrary(a6)
  77.     moveq    #0,d0
  78.     rts
  79.  
  80.  
  81. query    move.l    d0,a5
  82.     lea    query_text(pc),a0
  83.     move.l    a0,d2
  84.     move.l    #query_text_end-query_text,d3
  85.     bsr.s    clr2
  86.     bra.s    closedos
  87.  
  88. read_screen
  89.     move.l    wd_RPort(a4),a1
  90.     move.l    rp_BitMap(a1),a0
  91.     move.l    bm_Planes(a0),a1
  92.     move.l    0(a1,d1.l),d0    Read 32 pixels
  93.     rts
  94.  
  95. move_and_resize
  96.     moveq    #0,d1        A4=WINDOW
  97.     move.w    wd_LeftEdge(a4),d1
  98.     moveq    #0,d0
  99.     sub.l    d1,d0
  100.     moveq    #0,d2
  101.     move.w    wd_TopEdge(a4),d2
  102.     moveq    #0,d1
  103.     sub.l    d2,d1
  104.     move.l    a4,a0
  105.     jsr    _LVOMoveWindow(a6)
  106.     move.l    ib_ActiveScreen(a6),a5    A5=SCREEN
  107.     move.w    wd_Height(a4),d2
  108.     move.w    sc_Height(a5),d1
  109.     sub.w    d2,d1
  110.     ext.l    d1
  111.     move.w    wd_Width(a4),d2
  112.     move.w    sc_Width(a5),d0
  113.     sub.w    d2,d0
  114.     ext.l    d0
  115.     move.l    a4,a0
  116.     jsr    _LVOSizeWindow(a6)    KEEP SIZING WINDOW UNTIL THE SIZE
  117. 1$    move.w    sc_Height(a5),d0    READS BACK OK
  118.     cmp.w    wd_Height(a4),d0
  119.     bne.s    1$
  120.  
  121.     move.w    sc_Width(a5),d0
  122.     cmp.w    wd_Width(a4),d0
  123.     bne.s    1$
  124.     rts
  125.  
  126. home_cursor
  127.     lea    home(pc),a0
  128.     move.l    a0,d2
  129.     moveq    #3,d3
  130.     bra.s    clr2
  131. clear_screen
  132.     lea    cls(pc),a0
  133.     move.l    a0,d2
  134.     moveq    #1,d3
  135. clr2    move.l    dosbase(pc),a5
  136.     jsr    _LVOOutput(a5)
  137.     move.l    d0,d1
  138.     jsr    _LVOWrite(a5)
  139.     rts
  140.  
  141. kill_borders
  142.     moveq    #0,d0
  143.     jsr    _LVOLockIBase(a6)
  144.     move.l    d0,-(sp)
  145.     bset.b    #3,wd_Flags+2(a4)
  146.     clr.b    wd_BorderTop(a4)
  147.     clr.b    wd_BorderBottom(a4)
  148.     clr.b    wd_BorderRight(a4)
  149.     clr.b    wd_BorderLeft(a4)
  150.     move.l    a4,a0
  151.     jsr    _LVORefreshWindowFrame(a6)
  152.     move.l    (sp)+,a0
  153.     jsr    _LVOUnlockIBase(a6)
  154.     jsr    _LVORemakeDisplay(a6)
  155.     rts
  156.  
  157. null_resize
  158.     moveq    #$00,d0
  159.     moveq    #$00,d1
  160.     move.l    a4,a0
  161.     jsr    _LVOSizeWindow(a6)
  162.     move.l    a4,a0
  163.     jsr    _LVORefreshWindowFrame(a6)
  164.     rts
  165.  
  166. restore_borders
  167.     moveq    #0,d0
  168.     jsr    _LVOLockIBase(a6)
  169.     move.l    d0,-(sp)
  170.     bclr.b    #3,wd_Flags+2(a4)
  171.     move.b    #11,wd_BorderTop(a4)
  172.     move.b    #2,wd_BorderBottom(a4)
  173.     move.b    #18,wd_BorderRight(a4)
  174.     move.b    #4,wd_BorderLeft(a4)
  175.     move.l    a4,a0
  176.     jsr    _LVORefreshWindowFrame(a6)
  177.     move.l    (sp)+,a0
  178.     jsr    _LVOUnlockIBase(a6)
  179.     jsr    _LVORemakeDisplay(a6)
  180.     rts
  181.  
  182. dosbase    dc.l    0
  183. intbase    dc.l    0
  184. yesorno    dc.b    0
  185.     
  186. intname    dc.b    'intuition.library',0
  187. dosname    dc.b    'dos.library',0
  188. ramname    dc.b    'ram:',0
  189.  
  190. query_text
  191.     dc.b    $1b,'[33mAntiBorderV1.0 (C)1990 Paul Hayter',$1b,'[31m',10
  192.     dc.b    'Usage:    AntiBorder y    -Big Window, No Border.',10
  193.     dc.b    '    AntiBorder n    -Big Window with Border.',10
  194.     dc.b    '    AntiBorder y r    -Big Window, No Border, Lock RAM:',10
  195.     dc.b    '    AntiBorder n r    -Big Window with Border, Lock RAM:',10
  196. query_text_end
  197.  
  198. cls    dc.b    $0C
  199. home    dc.b    $9b,'H '
  200.